package chapter8.section3;

//程序8-4：固定容量队列
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;

import chapter6.section3.Account;

public class LinkedBlockingQueueDemo {
	// 使用LinkedList作为保存待处理业务的集合，主要是因为它的先进先出机制
	private Queue<Task> queue = new LinkedBlockingQueue<>(2);

	// 判断排队机中是否还有业务等待处理
	public boolean isEmpty() {
		return queue.isEmpty();
	}

	// 获得一项业务，可能为null
	public Task requestTask() {
		Task task = queue.poll();
		return task;
	}

	// 向排队机增加一项待处理业务
	public void addTask(Task task) {
		this.queue.add(task);
	}

	public static void main(String[] args) {
		LinkedBlockingQueueDemo qm = new LinkedBlockingQueueDemo();
		qm.addTask(new Task(1, new Account("001", "王华", 2000), 100,
				Task.DEPOSIT));
		qm.addTask(new Task(2, new Account("002", "鲁宁", 3000), 100,
				Task.DEPOSIT));
		qm.addTask(new Task(3, new Account("003", "廖凯", 2000), 100,
				Task.WITHDRAW));
		System.out.println("向排队机申请一项业务，获得的是：" + qm.requestTask());
	}
}
